Current computers typically employ a single main microprocessor or central processing unit (CPU) to run applications. Multiple applications can be run simultaneously via multitasking, whereby the single CPU is employed to run multiple applications by switching from one application to the next so rapidly that it appears all of the applications are running at the same time. Two types exist: preemptive multitasking has the CPU apportioning amounts of time to each application; cooperative multitasking has each application using the CPU for as long as necessary.
In both cases, the CPU is not substantially devoted to any one application, causing delays in processing which become more noticeable to the user as the complexity of the applications, and the number of applications simultaneously run by the user, increases. In addition, the possibility of processing errors increases as the CPU is forced to handle more complex and numerous applications simultaneously.